﻿Public Class ctrDepartamento
    Inherits ctrPadrao

#Region "Declaração de variáveis"

    Private objDepartamento As New Persistencia.perDepartamento
    Private objContato As New Controle.ctrContato
    Private iIdDepartamento As Int32

#End Region

#Region "Propriedades"

    Public Property IDDepartamento() As Int32
        Get
            Return Me.iIdDepartamento
        End Get
        Set(ByVal value As Int32)
            Me.iIdDepartamento = value
        End Set
    End Property

    Public ReadOnly Property sqlConsulta() As String
        Get
            Return Me.objDepartamento.sqlConsulta
        End Get
    End Property

#End Region

#Region "Métodos públicos"

    Public Function salvar(ByVal iIdDepartamento As Int32, _
                           ByVal sDepartamento As String) As Boolean

        Dim bResultado As Boolean = False

        If iIdDepartamento > 0 Then
            Me.alterarDepartamento(iIdDepartamento, _
                                   sDepartamento)
            Me.IDDepartamento = iIdDepartamento
            bResultado = True
        Else
            Me.IDDepartamento = Me.inserirDepartamento(sDepartamento)

            bResultado = True
        End If

        Return bResultado

    End Function

    Public Function excluir(ByVal iIdDepartamento As Int32) As Boolean
        Dim bResultado As Boolean = True

        If Me.objContato.verificarContatoDepartamento(iIdDepartamento) Then
            bResultado = False
        Else
            bResultado = True
        End If

        If bResultado Then
            Me.excluirDepartamento(iIdDepartamento)
        End If

        Return bResultado

    End Function

    Private Sub excluirDepartamento(ByVal iIdDepartamento As Int32)

        Try
            Me.objDepartamento.excluirDepartamento(iIdDepartamento)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'excluirDepartamento'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Public Function selecionarDepartamento(ByVal iIdDepartamento As Int32) As DataRow
        Try
            Return Me.objDepartamento.selecionarDepartamento(iIdDepartamento)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'selecionarDepartamento'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try
    End Function

    Public Function retornarCampoDepartamento(ByVal sCampo As String, _
                                              ByVal iIdDepartamento As Int32) As DataRow

        Try
            Dim dtDados As New DataTable

            dtDados = Me.objDepartamento.selecionarCampoDepartamento(sCampo, _
                                                                     iIdDepartamento)

            If Not dtDados Is Nothing Then
                Return dtDados.Rows(0)
            Else
                Return Nothing
            End If
        Catch ex As Exception
            Throw New Exception("Exceção no método 'retornarCampoDepartamento'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region

#Region "Métodos privados"

    Private Sub alterarDepartamento(ByVal iIdDepartamento As Int32, _
                                    ByVal sDepartamento As String)
        Try
            Me.objDepartamento.alterarDepartamento(iIdDepartamento, _
                                                   sDepartamento)
        Catch ex As Exception
            Throw New Exception("Exceção no método 'alterarDepartamento'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Sub

    Private Function inserirDepartamento(ByVal sDepartamento As String)

        Dim iIdDepartamento As Int32

        Try
            iIdDepartamento = Me.objDepartamento.inserirDepartamento(sDepartamento)

            Return iIdDepartamento

        Catch ex As Exception
            Throw New Exception("Exceção no método 'inserirDepartamento'. " & Environment.NewLine & Environment.NewLine & ex.Message)
        End Try

    End Function

#End Region
End Class
